package com.rytong.tools.ui.chart;

import java.util.ArrayList;

import com.rytong.tools.ui.Component;
import com.rytong.tools.ui.CssStyle;
import com.rytong.tools.utils.Utils;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

/**
 * li标签
 */
public class LITag extends Component {
    /**
     * 背景图
     */
    Bitmap bgImg_;
    /**
     * 根据cs样式中是否给了width和bgcolor来决定折线图中的每个li是否画点
     */
    boolean needDrawPoint_;
    /**
     * 标识当前li是否为默认选中状态
     */
    boolean selected_;

    public class MyLITag extends View {

        public MyLITag(Context context, String value) {
            super(context);
            paint_ = new Paint();
            paint_.setAntiAlias(true);
        }

        public Component composited() {
            return LITag.this;
        }

    }

    @Override
    public void initRealView(Activity activity, String nodeValue) {
        super.initRealView(activity, nodeValue);
        childrenList_ = new ArrayList<Component>(5);
        realView_ = new MyLITag(activity, nodeValue);
    }

    @Override
    public void mouldH() throws Exception {
        super.mouldH();
        String selected = (String) getPropertyByName("selected");
        if (selected != null && selected.equals("true")) {
            selected_ = true;
        }
        paint_.setTextSize(14);
        if (cssStyle_ != null) {
            String fontSizeStr = (String) cssStyle_.getProperty(CssStyle.FONTSIZE);
            String bgImgStr = (String) cssStyle_.getProperty(CssStyle.BGIMAGEURL);
            String fontColorStr = (String) cssStyle_.getProperty(CssStyle.COLOR);
            String bgColorStr = (String) cssStyle_.getProperty(CssStyle.BACKGROUNDCOLOR);
            if (null != fontSizeStr && !fontSizeStr.equals("")) {
                int fontSize = Integer.parseInt(fixedPX(fontSizeStr));
                fontSize = Utils.getFontSize(fontSize);
                // 设置字体大小
                if (fontSize > 0) {
                    paint_.setTextSize(fontSize);
                }
            }

            if (null != fontColorStr && !fontColorStr.equals("")) {
                int cs_fontColor = Utils.getColorValue(fontColorStr);
                // 设置画笔颜色
                paint_.setColor(cs_fontColor);
            }

            if (null != bgColorStr && !bgColorStr.equals("")) {
                int cs_bgColor = Utils.getColorValue(bgColorStr);
                if (Color.alpha(cs_bgColor) != 0 && width_ > 0) {
                    // 若cs给了width和背景色bgColor并且背景色的透明度不为0，将标志改为true
                    needDrawPoint_ = true;
                }
            }

            if (null != bgImgStr && !bgImgStr.equals("")) {
                bgImg_ = Utils.getBitmapFromResources(getContext(), bgImgStr);
                if (bgImg_ != null && width_ > 0 && height_ > 0) {
                    bgImg_ = Bitmap.createScaledBitmap(bgImg_, width_, height_, false);
                }
            }

        }
    }

    /**
     * 执行li标签上给的onclick方法
     */
    public void onClick() {
        String onclick = (String) getPropertyByName("onclick");
        if (onclick != null && !onclick.trim().equals("")) {
            // 执行点击事件
            onClick(onclick);
        }
    }
    
    @Override
    public void releaseResource(Component component) {
    	super.releaseResource(component);
    	if(bgImg_ != null && !bgImg_.isRecycled()){
    		bgImg_.recycle();
    		bgImg_ = null;
    	}
    }
}
